﻿package app.view.managers 
{
	import app.interfaces.ISection;
	import app.model.types.SectionType;
	import app.model.vo.SectionVO;
	import app.view.components.sections.PageMainMBase;
	import app.view.components.sections.Section;
	import flash.display.DisplayObject;
	import flash.display.Sprite;
	
	/**
	 * Менеджер секций
	 * @author firsoff maxim, snzflash.com, tel: +79222345364, skype: maxim.firsoff
	 */
	public class SectionsManager extends Sprite
	{
		private var _currentSection:ISection;
		private var _oldData:SectionVO;
		
		public function SectionsManager() 
		{
			super();
		};
		
		
		public function change(sectionVO:SectionVO):void 
		{
			//trace('SectionsManager : ' + sectionVO.id);
			if ( _currentSection )
			{
				_oldData = _currentSection.data as SectionVO;
				//_currentSection.destroy();
				_currentSection.onDestroy();
			};
			if ( !sectionVO) return;
			_currentSection = getSectionInstance(sectionVO.id);
			if ( !_currentSection ) return;
			// инициализируем
			//_currentSection.alpha = 0;
			_currentSection.open();
			_currentSection.data = sectionVO;
			addChild(_currentSection as DisplayObject);
		};
		
		/**
		 * опеределяется конкретный экземпляр секции, по входном id
		 */
		private function getSectionInstance(section_id:String):ISection
		{
			var result:ISection;
			switch (section_id) 
			{
				// 0 ВХОДНАЯ СТРАНИЦА
				// dmitryikoruagin@mail.ru
				
				///*
				
				case SectionType.PAGE_MAIN: 
					result = new PageMainM();
				break;
				
				// 1 ЭКСПО РОССИЯ
				case SectionType.PAGE_EXPO_RUSSIA: 
					result = new ExpoRussiaM();
				break;
				
				// 1.1 ЭКСПО 2010
				case SectionType.PAGE_EXPO_2010: 
					result = new Expo2010M();
				break;
				
				// 1.1.1 КОНЦЕПЦИЯ УЧАСТИЯ
				case SectionType.PAGE_EXPO_CONCEPT: 
					result = new ExpoConceptD();
				break;
				
				// 1.1.1.1 АРХИТЕКТУРА
				case SectionType.PAGE_EXPO_CONCEPT_ARHITECTURE: 
					result = new ExpoConceptArhitecturaD();
				break;
				
				// 1.1.1.2 СЦЕНОГРАФИЯ
				case SectionType.PAGE_EXPO_CONCEPT_SCENOGRAPHIA: 
					result = new ExpoConceptScenografiaD();
				break;
				
				// 1.1.2 КАРТА ПАВИЛЬОНА
				case SectionType.PAGE_EXPO_PAVILION_MAP: 
					result = new ExpoPavilionMapM();
				break;
				
				// 1.1.2.1 ВИДЕО-ПРЕЗЕНТАЦИЯ ПАВИЛЬОНА
				case SectionType.PAGE_EXPO_PAVILION_VIDEO_PRESENT: 
					result = new ExpoPavilionVideoPresentM();
				break;
				
				// 1.1.2.2 КАРТА И МАРШРУТ  (тут вышла некая несостыковочка названий)
				case SectionType.PAGE_EXPO_MAP_AND_ROUTE: 
					result = new ExpoPavilionRouteM();
				break;
				
				// 1.1.2.2.1 МАРШРУТ ПРОХОДА
				//  ?????
				
				// 1.1.2.2.2 УКАЗАТЕЛЬ ОБЪЕКТОВ
				// находится в попап меенджере
				
				// 1.1.2.3 СОСТАВ ЭКСПОЗИЦИЙ
				case SectionType.PAGE_EXPO_STRUCTURE_EXPOSITIONS: 
					result = new ExpoStructureExpositionsD();
				break;
				
				// 1.1.2.3.1 СОСТАВ ЭКСПОЗИЦИЙ В ВЫБРАННОЙ БАШНЕ
				case SectionType.PAGE_EXPO_CURRENT_EXPOSITION: 
					result = new ExpoCurrentExpositionD();
				break;
				
				// 1.1.3 КОМАНДА ПРОЕКТА
				case SectionType.PAGE_EXPO_PROJECT_TEAM: 
					result = new ExpoProjectTeamD();
				break;
				
				// 1.1.3.1 ОРГАНИЗАТОРЫ
				case SectionType.PAGE_EXPO_ORGANIZERS: 
					result = new ExpoOrganizersD();
				break;
				
				// 1.1.3.1.1 ОДИН ОРГАНИЗАТОРЫ
				case SectionType.PAGE_EXPO_ONE_ORGANIZER: 
					result = new ExpoOneOrganizersD();
				break;
				
				// 1.1.3.2 СПОНСОРЫ
				case SectionType.PAGE_EXPO_SPONSORS: 
					result = new ExpoSponsorsD();
				break;
				
				// 1.1.3.3.1 ОДИН СПОНСОРЫ
				case SectionType.PAGE_EXPO_ONE_SPONSORS: 
					result = new ExpoOneSponsorsD();
				break;
				
				// 1.1.3.3 ПАРТНЕРЫ
				case SectionType.PAGE_EXPO_PARTNERS: 
					result = new ExpoPartnersD();
				break;
				
				// 1.1.3.3.1 ОДИН ПАРТНЕРЫ
				case SectionType.PAGE_EXPO_ONE_PARTNERS: 
					result = new ExpoOnePartnersD();
				break;
				
				// 1.1.5 ПРОГРАММА СОБЫТИЙ
				case SectionType.PAGE_EXPO_PROGRAMM_EVENT: 
					//result = new ExpoProgrammEventsD();
				break;
				
				// 1.1.5.1 ПРОГРАММА НА КОНКРЕТНЫЙ ДЕНЬ (содержит набор событий на день)
				case SectionType.PAGE_EXPO_TODAY_PROGRAMM: 
					result = new ExpoTodayProgrammD();
				break;
				
				// 1.1.5.2 КАЛЕНДАРЬ СОБЫТИЙ
				case SectionType.PAGE_EXPO_EVENTS_CALENDAR: 
					result = new ExpoCalendarM();
				break;
				
				// 1.1.5.3 КОНКРЕТНОЕ СОБЫТИЕ НА ДЕНЬ
				case SectionType.PAGE_EXPO_TODAY_PROGRAMM_EXTEND: 
					result = new ExpoTodayProgrammExtendsD();
				break;
				
				// 1.2 ИСТОРИЯ УЧАСТИЯ
				case SectionType.PAGE_EXPO_HISTORY: 
					result = new ExpoHistoryM();
				break;
				
				// 1.2.1 Пролистывание годов
				case SectionType.PAGE_EXPO_COUNTRY_HISTORY: 
					result = new ExpoCountryHistotyD();
				break;
				
				// 1.3 ПУТЕВОДИТЕЛЬ ПО ЭКСПОЦЕНТРУ
				case SectionType.PAGE_EXPO_GUIDEBOOK: 
					result = new ExpoGuideBookD();
				break;
				
				// 1.4 КНИГА ОТЗЫВОВ И ПРЕДЛОЖЕНИЙ
				case SectionType.PAGE_EXPO_FEEDBACKS: 
					result = new ExpoFeedBeaksD();
				break;
				
				// 1.4.2 ОСТАВИТЬ ОТЗЫВ
				case SectionType.PAGE_EXPO_FEEDBACK_WRITE: 
					result = new ExpoFeedBacksWriteD();
				break;
				
				// 2 ДЕТИ
				case SectionType.PAGE_CHILDREN: 
					result = new ChildrenM();
				break;
				
				// 2.1 КОНКУРС ДЕТСКОГО РИСУНКА
				case SectionType.PAGE_CHILDREN_COMPETITION: 
					result = new ChildrenCompetitionM();
				break;
				
				// 2.1.1 ЭТАПЫ ПРОВЕДЕНИЯ КОНКУРСА
				case SectionType.PAGE_CHILDREN_COMPETITION_STAGES: 
					result = new ChildrenCompetitionStagesM();
				break;
				
				// 2.1.2 ПОБЕДИТЕЛИ
				case SectionType.PAGE_CHILDREN_COMPETITION_WINERS: 
					result = new ChildrenCompetitionWinersM();
				break;
				
				// 2.1.3  10 ИНТЕРВЬЮ ПОБЕДИТЕЛЕЙ
				case SectionType.PAGE_CHILDREN_INTERVIEW_WINERS: 
					result = new ChildrenInterviewWinersM();
				break;
				
				// 2.2.1 30 видео интервью
				case SectionType.PAGE_CHILDREN_30_RESEARCH: 
					result = new Children30ResearchM();
				break;
				
				// 2.3 ФОРСАЙТ ПРОЕКТ "ДЕТСТВО 2030"
				case SectionType.PAGE_CHILDREN_FORSITE_PROJECT: 
					result = new ChildrenForsiteProjectD();
				break;
				
				// 2.4 ПУТЕШЕСТВИЕ В ГОРОД ТАЛАНТОВ
				case SectionType.PAGE_CHILDREN_CITY_TALANTS: 
					result = new ChildrenCityTalantsD();
				break;
				
				// 3. О РОССИИ
				case SectionType.PAGE_RUSSIA_ABOUT: 
					result = new RussiaAboutD();
				break;
				
				// 3.1 ИНТЕРАКТИВНАЯ КАРТА
				case SectionType.PAGE_RUSSIA_MAP: 
					result = new RussiaMapD();
				break;
				
				// 3.2 ИСТОРИЧЕСКАЯ СПРАВКА
				case SectionType.PAGE_RUSSIA_HISTORY: 
					result = new RussiaHistory();
				break;
				
				// 3.2.1 ИСТОРИЯ В ЛИЦАХ
				case SectionType.PAGE_RUSSIA_FACES: 
					result = new RussiaFacesD();
				break;
				
				// 3.2.1.1 В ЛИЦАХ в виде "ленты"
				case SectionType.PAGE_RUSSIA_ONE_FACES: 
					result = new RussiaOneFaceD();
				break;
				
				
				// 3.2.2 ДАТЫ И СОБЫТИЯ В ИСТОРИИ
				
				// 3.3 КУЛЬТУРА РОССИИ
				case SectionType.PAGE_RUSSIA_CALTURE: 
					result = new RussiaCaltureD();
				break;
				
				// 3.3.1 ТРАДИЦИИ
				case SectionType.PAGE_RUSSIA_TRADITIONAL: 
					result = new RussiaTraditionalD();
				break;
				
				// 3.3.1.1 ТРАДИЦИИ (в виде ленты)
				case SectionType.PAGE_RUSSIA_ONE_TRADITIONAL: 
					result = new RussiaOneTraditionalD();
				break;
				
				// 3.3.2 УРОКИ РУССКОГО ЯЗЫКА
				case SectionType.PAGE_RUSSIA_LESSON_RUSSIA: 
					result = new RussiaLessonRussiaD();
				break;
				
				// 3.4 ИНТЕРЕСНОЕ В РОССИИ
				case SectionType.PAGE_RUSSIA_ABOUT_INTRESTING: 
					result = new RussiaAboutIntrestingD();
				break;
				
				// 3.4.1 НОВОЕ В ТЕХНОЛОГИЯХ
				case SectionType.PAGE_RUSSIA_NEW_IN_TEHNOLOGY: 
					result = new RussiaNewTehnologyD();
				break;
				
				// 3.4.2 ЧУДЕСА ПРИРОДЫ
				case SectionType.PAGE_RUSSIA_NATURE: 
					result = new RussiaNatureD();
				break;
				
				// 3.4.2.1 ЧУДЕСА ПРИРОДЫ (в виде ленты)
				case SectionType.PAGE_RUSSIA_ONE_NATURE: 
					result = new RussiaOneNatureD();
				break;
				
				// 3.4.3 ГДЕ МЫ БЫЛИ ПЕРВЫМИ
				case SectionType.PAGE_RUSSIA_WHERE_WE_FIRST: 
					result = new RussiaWhereWeBeD();
				break;
				
				// 3.4.3.1 ГДЕ МЫ БЫЛИ ПЕРВЫМИ (в виде ленты)
				case SectionType.PAGE_RUSSIA_ONE_WHERE_WE_FIRST: 
					result = new RussiaOneWhereWeBeD();
				break;
				
				
				// это все изменилось
				 //3.2 ЧУДЕСА ПРИРОДЫ
				//case SectionType.PAGE_RUSSIA_NATURE: 
					//result = new RussiaNatureD();
				//break;
				
				
				
				 //3.4 РОССИЯ В ЛИЦАХ
				//case SectionType.PAGE_RUSSIA_FACES: 
					//result = new RussiaFacesD();
				//break;
				
				// 3.5 О СТОЛИЦЕ
				//case SectionType.PAGE_RUSSIA_CAPITAL: 
					//result = new RussiaCapitalD();
				//break;
				
				//*/
				
			}
			
			return result;
		}
		
		public function get currentSection():ISection { return _currentSection; }
		
		public function set currentSection(value:ISection):void 
		{
			_currentSection = value;
		}
	};

};